#ifndef WEATHER_H
#define WEATHER_H

#include "lvgl/lvgl.h"
#include <stdbool.h>

// 天气页面函数声明
void create_weather_screen(void);
void cleanup_weather_ui(void);

// IP地理位置结构体
typedef struct {
    char ip[32];            // IP地址
    char country[32];       // 国家
    char province[32];      // 省份
    char city[32];          // 城市
    char district[32];      // 区域
    char weaid[16];         // 城市天气ID
    bool is_valid;          // 数据是否有效
} ip_location_data_t;

// 天气API相关结构体
typedef struct {
    char days[32];          // 日期
    char week[16];          // 星期
    char citynm[64];        // 城市名
    char temperature[32];   // 温度范围
    char temperature_curr[16]; // 当前温度
    char humidity[16];      // 湿度
    char weather[64];       // 天气描述
    char weather_curr[64];  // 当前天气状况
    char wind[32];          // 风向
    char winp[32];          // 风力
    char temp_high[8];      // 最高温度
    char temp_low[8];       // 最低温度
    char aqi[8];            // 空气质量指数
    char weather_iconid[8]; // 天气图标ID
    char weather_icon[128]; // 天气图标URL
    bool is_valid;          // 数据是否有效
} weather_api_data_t;

// IP地理位置功能已移除，现在直接使用IP地址查询天气

// IP地址获取函数声明
char* get_public_ip(void);

// 天气API函数声明
bool fetch_weather_by_ip(weather_api_data_t *data, const char *ip);
bool fetch_weather_data(weather_api_data_t *data, const char *weaid);  // 保留原函数
void update_weather_display(const weather_api_data_t *data);

// 外部天气图标声明（在weather_pic目录中定义）
// 白天图标 (d_xx)
extern const lv_img_dsc_t d_00, d_01, d_02, d_03, d_04, d_05, d_06, d_07, d_08, d_09;
extern const lv_img_dsc_t d_10, d_11, d_12, d_13, d_14, d_15, d_16, d_17, d_18, d_19;
extern const lv_img_dsc_t d_20, d_21, d_22, d_23, d_24, d_25, d_26, d_27, d_28, d_29;
extern const lv_img_dsc_t d_30, d_31, d_32, d_33, d_49, d_53, d_54, d_55, d_56, d_57, d_58;
extern const lv_img_dsc_t d_301, d_302;

// 夜晚图标 (n_xx)
extern const lv_img_dsc_t n_00, n_01, n_02, n_03, n_04, n_05, n_06, n_07, n_08, n_09;
extern const lv_img_dsc_t n_10, n_11, n_12, n_13, n_14, n_15, n_16, n_17, n_18, n_19;
extern const lv_img_dsc_t n_20, n_21, n_22, n_23, n_24, n_25, n_26, n_27, n_28, n_29;
extern const lv_img_dsc_t n_30, n_31, n_32, n_33, n_49, n_53, n_54, n_55, n_56, n_57, n_58;
extern const lv_img_dsc_t n_301, n_302;

#endif // WEATHER_H
